#ifndef _QUEUE_H_
#define _QUEUE_H_

#include "Object.h"

namespace MySTL
{

template < typename T>
class Queue : public Object
{
public:
	Queue() {}
	virtual bool enqueue(const T& value) = 0;
	virtual T dequeue() = 0;
	virtual T& top() = 0;
	virtual const T& top() const = 0;
	virtual void clear() = 0;
	virtual int length() const = 0;

protected:
	Queue(const Queue& obj);
	Queue& operator =(const Queue& obj);
};

}

#endif